package com.dz.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serial;
import java.io.Serializable;

/**
 * 地址簿
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AddressBook implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @NotNull(message = "id must not be null")
    private Long id;

    //用户id
    private Long userId;

    //收货人
    @NotNull(message = "收货人不能为空")
    private String consignee;

    // 手机号
    @NotNull(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    // 性别 0 女 1 男
    @NotNull(message = "性别不能为空")
    @Pattern(regexp = "^[01]$", message = "性别必须是0或1")
    private String sex;

    // 省级区划编号
    @NotNull(message = "省级区划编号不能为空")
    @Size(min = 1, message = "省级区划编号不能为空")
    private String provinceCode;

    // 省级名称
    @NotNull(message = "省级名称不能为空")
    @Size(min = 1, message = "省级名称不能为空")
    private String provinceName;

    // 市级区划编号
    @NotNull(message = "市级区划编号不能为空")
    @Size(min = 1, message = "市级区划编号不能为空")
    private String cityCode;

    // 市级名称
    @NotNull(message = "市级名称不能为空")
    @Size(min = 1, message = "市级名称不能为空")
    private String cityName;

    // 区级区划编号
    @NotNull(message = "区级区划编号不能为空")
    @Size(min = 1, message = "区级区划编号不能为空")
    private String districtCode;

    // 区级名称
    @NotNull(message = "区级名称不能为空")
    @Size(min = 1, message = "区级名称不能为空")
    private String districtName;

    // 详细地址
    @NotNull(message = "详细地址不能为空")
    @Size(min = 1, message = "详细地址不能为空")
    private String detail;

    // 标签
    private String label;

    // 是否默认 0否 1是
    private Integer isDefault;




   /* //手机号
    private String phone;

    //性别 0 女 1 男
    private String sex;

    //省级区划编号
    private String provinceCode;

    //省级名称
    private String provinceName;

    //市级区划编号
    private String cityCode;

    //市级名称
    private String cityName;

    //区级区划编号
    private String districtCode;

    //区级名称
    private String districtName;

    //详细地址
    private String detail;

    //标签
    private String label;

    //是否默认 0否 1是
    private Integer isDefault;*/
}
